package com.tbit.uqbike.webmanager.dao.core;


import com.tbit.uqbike.object.pojo.MachineStatus;
import com.tbit.uqbike.object.pojo.MachineStatusFlag;
import com.tbit.uqbike.object.pojo.NameCount;

import java.util.List;
import java.util.Map;

/**
 * 设备最后状态
 *
 * @author Leon
 * 2019年11月11日 上午10:56:37
 */
public interface MachineStatusDao {

    /**
     * 根据设备id查询
     *
     * @param machineId
     * @return
     */
    MachineStatus getByMachineId(Integer machineId);

    /**
     * 根据设备编号查询
     *
     * @param machineNO
     * @return
     */
    MachineStatus getByMachineNO(String machineNO);

    /**
     * 根据设备id批量查询
     *
     * @param params
     * @return
     */
    List<MachineStatus> getByMachineIdBatch(Map<String, Object> params);

    /**
     * 根据代理商id查询
     *
     * @param accountId
     * @return
     */
    List<MachineStatus> getByAccountId(Integer accountId);

    /**
     * 查询代理商低电量设备
     *
     * @param params
     * @return
     */
    List<MachineStatus> getSocByAccountId(Map<String, Object> params);

    /**
     * 获取状态和最后借出信息
     *
     * @param params
     * @return
     */
    List<MachineStatusFlag> getUnUseByAccountId(Map<String, Object> params);


    /**
     * 根据代理商获取车辆状态
     *
     * @param params
     * @return
     */
    List<MachineStatusFlag> getMachineStatusFlagByAccId(Map<String, Object> params);

    List<MachineStatusFlag> getPic(Map<String, Object> params);


    /**
     * 获取总数
     *
     * @param params
     * @return
     */
    int getMachineStatusCntFlagByAccId(Map<String, Object> params);

    /**
     * 异常类型统计
     *
     * @param params
     * @return
     */
    List<NameCount> statAbnormal(Map<String, Object> params);

    /**
     * 异常类型统计
     *
     * @param params
     * @return
     */
    List<NameCount> statAbnormalByRegionId(Map<String, Object> params);


    List<NameCount> statAbnormalByIds(Map<String, Object> params);

    List<NameCount> statIdleByIds(Map<String, Object> params);

    List<NameCount> statBatteryByIds(Map<String, Object> params);

    List<NameCount> getByUseByIds(Map<String, Object> params);

    /**
     * 查询代理商故障设备
     *
     * @param params
     * @return
     */
    List<MachineStatus> getFaultByAccountId(Map<String, Object> params);


}